9
Protocolos de comunicación
Operación
Inicialización y reinicio (reset)
Formato del Character
Protocolos de comunicación
Detección automática de errores
Habilitación de recepción
Habilitación de transmisión
Generación de tasa de transferencia
Interrupciones
10
(Gp:) Idle-Line Multiprocessor Format
(Gp:) Address-Bit Multiprocessor Format
(Gp:) 2 dispositivos
(Gp:) Bit MM=0
(Gp:) 3 o más dispositivos
(Gp:) Bit MM=1
Protocolos de Comunicación
11
(Gp:) Tiempo de espera de 10 bits o mas
(Gp:) Tiempo de espera menor a 10 bits
(Gp:) Frame
(Gp:) Frame dentro del bloque
(Gp:) Frame dentro del bloque
(Gp:) Primer Frame dentro del bloque es uan direccion, sigue a un tiempo de espera
(Gp:) Expandido
Protocolos de Comunicación:
Protocolos de Comunicación:Idle-Line Multiprocessor Format
12
Protocolos de Comunicación
(Gp:) TXWAKE=1
(Gp:) Escribir character en UxTXBUF
(Gp:) Contenido de UxTXBUF es llevado al registro de TX
(Gp:) Transmite 11 unos
(Gp:) TXWAKE=0 automaticamente
Idle-Line Multiprocessor Format Transmisión de datos
13
Protocolos de Comunicación:
(Gp:) Se escribe la dirección en UxTXBUF
(Gp:) Registro tiene que estar listo
(Gp:) Se inicia la transmisión con un character dont care
Idle-Line Multiprocessor Format Transmisión de datos
14
(Gp:) Primer frame del bloque
es una dirección
(Gp:) AD Bit es cero
para dato en el bloque
(Gp:) Expandido
(Gp:) Tiempo de espera
(Gp:) Bloques de frames
(Gp:) Tiempo de espera
Protocolos de Comunicación:
Protocolos de Comunicación: Address-Bit Multiprocessor Format
UxRCTL Usart Receive Control Register
15
Protocolos de Comunicación:
Control del address bit para transmisión
(Gp:) Se escribe en bit TXWAKE
(Gp:) Este es cargado en el address bit del carácter transferido
(Gp:) Se limpia automáticamente
Address-Bit Multiprocessor Format
(Gp:) UxTCTL, Usart Transmit Control Register
16
Detección automática de errores
Operación
Inicialización y reinicio (reset)
Formato del Character
Detección automática de errores
Protocolos de comunicación
Habilitación de recepción
Habilitación de transmisión
Generación de tasa de transferencia
Interrupciones
17
Error de framing
Error de paridad
Error de rebalse (receive overrun)
Condición de break
Detección automática de
herores
errores
(Gp:) UxRCTL Usart Receive Control Register
18
Habilitación de recepción
Operación
Inicialización y reinicio (reset)
Formato del Character
Habilitación de recepción
Protocolos de comunicación
Detección automática de errores
Habilitación de transmisión
Generación de tasa de transferencia
Interrupciones
19
Habilitación de recepción
Habilitación de recepción
(Receive Enable)
(Gp:) URXEX Habilita o deshabilita recepción de datos
(Gp:) Se guardan en el UxRXBUF
20
Habilitación de recepción
(Gp:) Character recibido
(Gp:) Condición de Interrupción
(Gp:) URXEx=0
(Gp:) URXEx=1
(Gp:) URXEx=1
(Gp:) URXEx=0
(Gp:) URXEx=1
(Gp:) URXEx=0
(Gp:) Recepcion
Deshabilitada
(Gp:) Estado de espera (Recepcion Deshabilitada)
(Gp:) Receptor recibe el character
(Gp:) Incompleto
(Gp:) Bit de inicio inválido
Habilitación de recepción (Receive Enable)
(Gp:) UxTCTL, Usart Transmit Control Register
21
Habilitación de transmisión
Habilitación de recepción
Operación
Inicialización y reinicio (reset)
Formato del Character
Habilitación de transmisión
Protocolos de comunicación
Detección automática de errores
Generación de tasa de transferencia
Interrupciones
22
Habilitación de transmision
Habilitación de Transmisión (Transmit Enable)
(Gp:) UTxEX habilita o deshabilita transmisión de datos
(Gp:) Se inicia la transmisión escribiendo en UxTxBUF
23
(Gp:) Character Transmitido
(Gp:) Condición de Interrupción
(Gp:) UTXEx=0
(Gp:) UTXEx=1, Se escribe dato al buffer de transmisión
(Gp:) UTXEx=1
(Gp:) UTXEx=0
(Gp:) UTXEx=1
(Gp:) UTXEx=0 y última entrada del buffer es transmitida
(Gp:) Transmisión
Deshabilitada
(Gp:) Estado de espera (Transmisor Habilitado)
(Gp:) Transmisión Activa
(Gp:) Incompleto
(Gp:) No se escribe dato en el buffer de transmisión
Habilitación de transmision
Habilitación de Transmisión
(Transmit Enable)
(Gp:) UxTCTL, Usart Transmit Control Register
24
Habilitación de transmision
Habilitación de Transmisión
(Transmit Enable)
Para transmitir al buffer
UTxEX=1 y UTxIFGX=1
El bit TxEPT=1 indica que la transmisión activa se ha completado, esto evita errores
25
Generación de tasa de transferencia
Habilitación de transmisión
Habilitación de recepción
Operación
Inicialización y reinicio (reset)
Formato del Character
Generación de la tasa de transferencia
Protocolos de comunicación
Detección automática de errores
Interrupciones
26
Generacion de la tasa
Generación de la tasa de transferencia (Baude rate)
La tasa máxima=1/3 BRCKL
Puede generar frecuencias no estándares
Baude rate=BRCLK/N
(Gp:) Factor guardado en registros UxBR0 y UxBR1
(Gp:) UxBR0 y UxBR0 , Baud Rate Control Register
27
Interrupciones
Generación de tasa de transferencia
Habilitación de transmisión
Habilitación de recepción
Operación
Inicialización y reinicio (reset)
Formato del Character
Interrupciones
Protocolos de comunicación
Detección automática de errores
28
Interrupciones
Interrupciones
Vector de interrupciones para transmisión
Vector de interrupciones para recepción
Cuando el buffer está listo
Cuando ya ha transmitido se resetea
Cuando un carácter es recibido y cargado en el buffer
Se resetea cuando ha sido leído o la interrupción ha sido servida
URxIFGX=1
UTxIFGX=1
29
Interrupciones
Interrupciones
Registros de interrupción 1 y 2
(Gp:) UTXIFGX, flag de transmisión
(Gp:) URXIFGX, flag de recepción
30
#include < msp430x14x.h>
#include "MSP430lib.c"
#include "TRcircbuf.c"
void main (void){
/* Inicialización de osciladores (MSP430lib)*/
InitOsc ();
/* Inicialización de puertos Entrada/Salida (MSP430lib) */
InitPorts ();
/* Inicialización de UART (TRcircbuf) */
RS232Init ();
/* Inicialización de LCD (MSP430lib) */
InitLCD ();
Ejemplo de programación
Ejemplo de Programación
31
/* Loop de recepción */
while (1){
/* Espera la llegada de un byte a la entada serial y lo almacena en el buffer*/
/* Este estado es interrumpido por RXInterrupt */
if ( RS232RXBufferCount() ){
/* Lee el caracter del buffer y lo almacena en una variable */
RxB = cRS232GetChar();
/* Prende el led */
STATUS_LED_ON;
Ejemplo de programación(2)
Ejemplo de programación
32
/* Limpia el LCD */
if (cntr == 0){
SEND_CMD(CLR_DISP);
SEND_CMD(DD_RAM_ADDR);
}
/* Envia el caracter recibido al LCD */
SEND_CHAR(RxB);
if(cntr == 15) SEND_CMD(DD_RAM_ADDR2);
if(cntr++ == 31) cntr = 0;
STATUS_LED_OFF;
}
}
}
Ejemplo de programación(3)
Ejemplo de programación
33
Fin del asunto
34
(Aplausos aquí)
35
unsigned char RS232RXBufferCount (void)
{
return (RXCharCount);
}
RS232RXBufferCount
36
void RS232Init (void)
{
RXWriteIndex = RXReadIndex = RXCharCount = 0;
TXWriteIndex = TXReadIndex = TXCharCount = 0;
TXBufferEmpty = BUFFER_EMPTY; // reset empty flag
InitUART0();
}
RS232Init
37
char cRS232GetChar (void)
{
char Byte;
if (RXCharCount){ /* Verifica si hay char aún disponible */
Byte = RXBuffer[RXReadIndex++]; /* Obtiene byte del buffer */
RXReadIndex &= RXBUFSIZE-1; /* Indice de buffer circular */
RX_INT_DISABLE; /* Inhabilita interrupción (IE2) */
RXCharCount–; /* Lectura de un char decrementa la cuenta */
RX_INT_ENABLE; /* Hecho, se habilita interrupción(IE2) */
return (Byte);
}
else
return (0); /* si no hay nuevo char */
}
cRS232GetChar
38
InitPorts
void InitPorts(void) {
P1SEL = 0;
P1OUT = 0;
P1DIR = BIT5 | BIT6; /* enable only Relay outputs */
P2SEL = 0;
P2OUT = 0;
P2DIR = ~BIT0; /* habilita P2.0 es entrada */
P3SEL |= BIT4 | BIT5; /* enable UART0 */
P3DIR |= BIT4; /* enable TXD0 as output */
P3DIR &= ~BIT5; /* enable RXD0 as input */
P4SEL = 0;
P4OUT = 0;
P4DIR = BIT2 | BIT3; /* only buzzer pins are outputs */
P6SEL = 0x80;
P6OUT = 0;
P6DIR = 0x00; /* all output */
}
39
void InitUART0 (void) /* Inicialización UART0 */
{
BCSCTL1 & = ~DIVA0;
BCSCTL1 | = DIVA1; /* ACLK = XT1 / 4 */
UCTL0 = CHAR; /* 8 data bits, sin paridad, 1 bit de detencion*/
UTCTL0 = SSEL0; /* se elige ACLK como reloj para UART */
U0BR0 = 0xd0; /* 2000000:9600=208
U0BR1 = 0x00;
UMCTL0 = 0x00; /* sin modulación*/
ME1 | = UTXE0 | URXE0; /* habilitan modulos de tx y rx UART */
P3SEL | = 0x30; /* define bits de tx y rx P3.4 P3.5 */
P3DIR | = BIT4; /* habilita TXD0 como salida*/
P3DIR & = ~BIT5; /* habilita RXD0 como entrada*/
IE1 | = URXIE0; /* habilita USART0 RX interrupcion*/
IE1 | = UTXIE0; /* habilita USART0 TX interrupcion */
_EINT(); /* habilita interrupción*/
}
InitUART0
InitUART0
40
UxCTL Registro de control USART
41
UxTCTL
UxCTL Registro de control de tx
42
uxbr0
Registro de control de tasa de transferencia
43
bcsctl
44
Uxmctl
45
Página anterior | Volver al principio del trabajo | Página siguiente |